Today, somewhere between 6,500 and 10,000 languages are spoken worldwide. Since computers were first constructed, attempts have been made to program them to understand human languages and provide translations between them. Many computer methods have been proposed to understand and translate languages. These methods generally rely on the use of sets of language-specific rules created to utilise tagged words or statistical methods based on word sequence likelihood computed from the analysis of language samples. For rule-based systems, the programmer normally writes the code specifically to interpret the rules—a lengthy and complex task. Furthermore, these approaches do not usually cater effectively to the use of idiomatic words and phrases.